package org.wheel.plugins.toolkit.sql.core;

import org.wheel.plugins.toolkit.sql.enums.Dialect;
import org.wheel.plugins.toolkit.sql.enums.SqlModel;

public interface Wrapper<T> extends SqlSegment {
    Wrapper<T> as(String alias);
    String getMainAlias();
    String resolveAlias(Class<?> entityClass, int joinIndex);

    Class<T> getEntityClass();

    /* 默认 MYSQL */
    default Dialect getDialect() {
        return Dialect.MYSQL;
    }

    default SqlModel getSqlModel() {
        return GlobalConfig.getSqlModel();
    }

    /* 注入 */
    Wrapper<T> dialect(Dialect dialect);

    Wrapper<T> sqlModel(SqlModel model);
}